package cfgx

import (
	"bytes"

	"github.com/spf13/viper"
	"zhonghui/console/warehouse/envx"
)

var v *viper.Viper

type CfgItem struct {
	Id    string
	Group string
}

func Cfg() *viper.Viper {
	return v
}

// 初始化
func init() {
	v = viper.New()
	v.SetConfigType("yaml")
}

// Fetch 获取一个或多个配置文件
//
//	config.Fetch(config.CfgItem{
//			Id:    "database",
//			Group: "common",
//		})
func Fetch(keys ...CfgItem) {
	if err := v.ReadConfig(bytes.NewBuffer(getLocalCfg())); err != nil {
		panic(err)
	}
}

func getLocalCfg() []byte {
	switch envx.OsEnv() {
	case "dev", "":
		return []byte(devYaml)
	case "test":
		return []byte(testYaml)
	case "prod":
		return []byte(prodYaml)
	default:
		return nil
	}
}
